package com.example.demo.handler;

import com.example.rabbitmq.starter.handler.FailureHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

/**
 * 日志记录失败处理器
 * 简单的失败处理器实现，仅记录详细的失败日志
 * 适用于开发和测试环境
 */
@Component
public class LogFailureHandler implements FailureHandler {
    
    private static final Logger logger = LoggerFactory.getLogger(LogFailureHandler.class);
    
    @Override
    public void handleFailure(String messageId, String messageContent, String messageType, int retryCount, Exception lastException) {
        logger.error("=== 消息消费失败处理 ===");
        logger.error("消息ID: {}", messageId);
        logger.error("消息类型: {}", messageType);
        logger.error("重试次数: {}", retryCount);
        logger.error("消息内容: {}", messageContent);
        
        if (lastException != null) {
            logger.error("失败原因: {}", lastException.getMessage());
            logger.error("异常堆栈:", lastException);
        }
        
        logger.error("=== 失败处理完成 ===");
        
        // 可以在这里添加其他处理逻辑，比如：
        // 1. 写入特定的日志文件
        // 2. 发送到监控系统
        // 3. 更新统计信息等
    }
    
    @Override
    public String getHandlerName() {
        return "日志记录处理器";
    }
}